home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / awt / VariableGridLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.7 KB  |  181 lines

  1. package sun.awt;
  2.  
  3. import java.awt.Container;
  4. import java.awt.Dimension;
  5. import java.awt.GridLayout;
  6. import java.awt.Insets;
  7. import java.util.BitSet;
  8.  
  9. public class VariableGridLayout extends GridLayout {
  10.    BitSet rowsSet;
  11.    double[] rowFractions;
  12.    BitSet colsSet;
  13.    double[] colFractions;
  14.    int rows;
  15.    int cols;
  16.    int hgap;
  17.    int vgap;
  18.  
  19.    public VariableGridLayout(int var1, int var2) {
  20.       this(var1, var2, 0, 0);
  21.       if (var1 != 0) {
  22.          this.rowsSet = new BitSet(var1);
  23.          this.stdRowFractions(var1);
  24.       }
  25.  
  26.       if (var2 != 0) {
  27.          this.colsSet = new BitSet(var2);
  28.          this.stdColFractions(var2);
  29.       }
  30.  
  31.    }
  32.  
  33.    public VariableGridLayout(int var1, int var2, int var3, int var4) {
  34.       super(var1, var2, var3, var4);
  35.       this.rowsSet = new BitSet();
  36.       this.rowFractions = null;
  37.       this.colsSet = new BitSet();
  38.       this.colFractions = null;
  39.       this.rows = var1;
  40.       this.cols = var2;
  41.       this.hgap = var3;
  42.       this.vgap = var4;
  43.       if (var1 != 0) {
  44.          this.rowsSet = new BitSet(var1);
  45.          this.stdRowFractions(var1);
  46.       }
  47.  
  48.       if (var2 != 0) {
  49.          this.colsSet = new BitSet(var2);
  50.          this.stdColFractions(var2);
  51.       }
  52.  
  53.    }
  54.  
  55.    void stdRowFractions(int var1) {
  56.       this.rowFractions = new double[var1];
  57.  
  58.       for(int var2 = 0; var2 < var1; ++var2) {
  59.          this.rowFractions[var2] = (double)1.0F / (double)var1;
  60.       }
  61.  
  62.    }
  63.  
  64.    void stdColFractions(int var1) {
  65.       this.colFractions = new double[var1];
  66.  
  67.       for(int var2 = 0; var2 < var1; ++var2) {
  68.          this.colFractions[var2] = (double)1.0F / (double)var1;
  69.       }
  70.  
  71.    }
  72.  
  73.    public void setRowFraction(int var1, double var2) {
  74.       this.rowsSet.set(var1);
  75.       this.rowFractions[var1] = var2;
  76.    }
  77.  
  78.    public void setColFraction(int var1, double var2) {
  79.       this.colsSet.set(var1);
  80.       this.colFractions[var1] = var2;
  81.    }
  82.  
  83.    public double getRowFraction(int var1) {
  84.       return this.rowFractions[var1];
  85.    }
  86.  
  87.    public double getColFraction(int var1) {
  88.       return this.colFractions[var1];
  89.    }
  90.  
  91.    void allocateExtraSpace(double[] var1, BitSet var2) {
  92.       double var3 = (double)0.0F;
  93.       int var5 = 0;
  94.  
  95.       for(int var6 = 0; var6 < var1.length; ++var6) {
  96.          if (var2.get(var6)) {
  97.             var3 += var1[var6];
  98.          } else {
  99.             ++var5;
  100.          }
  101.       }
  102.  
  103.       if (var5 != 0) {
  104.          double var7 = ((double)1.0F - var3) / (double)var5;
  105.  
  106.          for(int var9 = 0; var9 < var1.length; ++var9) {
  107.             if (!var2.get(var9)) {
  108.                var1[var9] = var7;
  109.                var2.set(var9);
  110.             }
  111.          }
  112.       }
  113.  
  114.    }
  115.  
  116.    void allocateExtraSpace() {
  117.       this.allocateExtraSpace(this.rowFractions, this.rowsSet);
  118.       this.allocateExtraSpace(this.colFractions, this.colsSet);
  119.    }
  120.  
  121.    public void layoutContainer(Container var1) {
  122.       Insets var2 = var1.insets();
  123.       int var3 = var1.countComponents();
  124.       int var4 = this.rows;
  125.       int var5 = this.cols;
  126.       if (var4 > 0) {
  127.          var5 = (var3 + var4 - 1) / var4;
  128.       } else {
  129.          var4 = (var3 + var5 - 1) / var5;
  130.       }
  131.  
  132.       if (this.rows == 0) {
  133.          this.stdRowFractions(var4);
  134.       }
  135.  
  136.       if (this.cols == 0) {
  137.          this.stdColFractions(var5);
  138.       }
  139.  
  140.       Dimension var6 = var1.size();
  141.       int var7 = var6.width - (var2.left + var2.right);
  142.       int var8 = var6.height - (var2.top + var2.bottom);
  143.       var7 -= (var5 - 1) * this.hgap;
  144.       var8 -= (var4 - 1) * this.vgap;
  145.       this.allocateExtraSpace();
  146.       int var9 = 0;
  147.  
  148.       for(int var10 = var2.left; var9 < var5; ++var9) {
  149.          int var11 = (int)(this.getColFraction(var9) * (double)var7);
  150.          int var12 = 0;
  151.  
  152.          for(int var13 = var2.top; var12 < var4; ++var12) {
  153.             int var14 = var12 * var5 + var9;
  154.             int var15 = (int)(this.getRowFraction(var12) * (double)var8);
  155.             if (var14 < var3) {
  156.                var1.getComponent(var14).reshape(var10, var13, var11, var15);
  157.             }
  158.  
  159.             var13 += var15 + this.vgap;
  160.          }
  161.  
  162.          var10 += var11 + this.hgap;
  163.       }
  164.  
  165.    }
  166.  
  167.    static String fracsToString(double[] var0) {
  168.       String var1 = "[" + var0.length + "]";
  169.  
  170.       for(int var2 = 0; var2 < var0.length; ++var2) {
  171.          var1 = var1 + "<" + var0[var2] + ">";
  172.       }
  173.  
  174.       return var1;
  175.    }
  176.  
  177.    public String toString() {
  178.       return this.getClass().getName() + "[hgap=" + this.hgap + ",vgap=" + this.vgap + ",rows=" + this.rows + ",cols=" + this.cols + ",rowFracs=" + fracsToString(this.rowFractions) + ",colFracs=" + fracsToString(this.colFractions) + "]";
  179.    }
  180. }
  181.